1. Field of the Invention
This invention relates to data processing systems. More particularly, this invention relates to the provision of diagnostic mechanisms for use with asymmetric multiprocessor apparatus.
2. Description of the Prior Art
Diagnostic mechanisms, such as debug mechanisms, trace mechanisms and profiling mechanisms, are increasingly significant in the field of data processing system development. As data processing systems become more complex, and the time for their development and testing becomes shorter, there is an increasing need for powerful and easy-to-use diagnostic mechanisms that can be used to identify problems associated with data processing systems and improve the performance of those data processing systems by adjusting their design and configuration.
Another trend within data processing systems is the increasing use of multiprocessor systems. These are used to deliver higher performance by permitting processing to be performed in parallel, typically by different threads of a program or task. One form of such multiprocessor systems is known as a symmetric multiprocessor system. Such symmetric systems typically include a plurality of identical processor cores each having an identical coherent view of program and data memory and operating system software is responsible for allocating the tasks/threads to be performed to the individual processors and for migrating a task/thread between processors. That is, a single thread of program instruction execution is time-multiplexed between a plurality of processors under operating system control. Within such symmetric systems the operating system can be used to determine where individual tasks/threads are being executed and provide a programmer with the appearance of a single thread executing on a single processor even when the operating system scheduling migrates execution from one processor to another processor. Such an approach is limited to processors which are identical and where migration is performed by the operating system, i.e. without being triggered by the program itself.
Whilst symmetric multiprocessor systems can improve processing performance, they are inefficient to some degree. As an example, if the processing to be performed requires some operations which would best be performed by a DSP type core (e.g. highly numerically intensive and repetitive) and other tasks better performed by a general purpose processor (e.g. flow control, user input etc), then a symmetric multiprocessor is a relatively inefficient way of implementing such processing. This has been recognised and it is known to provide asymmetric multiprocessing (AMP) systems. An example of such a system would be the OMAP platform designed by Texas Instruments. Within such platforms multiple different processors are provided with each of these having characteristics making it better suited to some tasks over others. As an example, an asymmetric multiprocessor may include a DSP core as well as a general purpose microprocessor core. Whilst such asymmetric multiprocessors have strong advantages in terms of the processing performance they can deliver with relatively low cost and low power consumption, they are more difficult to program and develop due to their heterogeneous nature. In order to make good use of such asymmetric multiprocessor systems, it is normal for the migration of tasks between threads to be performed by the program itself rather than under control of an operating system. Furthermore, the different processing architectures of the different processors mean that significantly different diagnostic mechanisms may be appropriate to each of the processors. Synchronous remote procedure calls in AMP systems can be viewed as program controlled migration of threads from one processor to the other in analogy to operating system controlled migration of threads in SMP systems but this simple view of the system is not supported by existing diagnostic mechanisms which partition the system according to which processor performs the operations. This has the result that the relatively simple diagnostic techniques associated with symmetric multiprocessing systems cannot readily be used with asymmetric multiprocessor systems even though the complexity and difficulty of programming such asymmetric processing systems mean that diagnostic mechanisms are even more important. In a traditional AMP system, code running on each processor is treated separately. The code for each processor is debugged as if it were a separate program which communicates with separate programs on other processors.